<!DOCTYPE html><html  lang="en" data-capo=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><style id="nuxt-ui-colors">:root {
--color-primary-50: 245 243 255;
--color-primary-100: 237 233 254;
--color-primary-200: 221 214 254;
--color-primary-300: 196 181 253;
--color-primary-400: 167 139 250;
--color-primary-500: 139 92 246;
--color-primary-600: 124 58 237;
--color-primary-700: 109 40 217;
--color-primary-800: 91 33 182;
--color-primary-900: 76 29 149;
--color-primary-950: 46 16 101;
--color-primary-DEFAULT: var(--color-primary-500);

--color-gray-50: 249 250 251;
--color-gray-100: 243 244 246;
--color-gray-200: 229 231 235;
--color-gray-300: 209 213 219;
--color-gray-400: 156 163 175;
--color-gray-500: 107 114 128;
--color-gray-600: 75 85 99;
--color-gray-700: 55 65 81;
--color-gray-800: 31 41 55;
--color-gray-900: 17 24 39;
--color-gray-950: 3 7 18;
}

.dark {
  --color-primary-DEFAULT: var(--color-primary-400);
}
</style><title>S3 Image Port</title><style>.my-enter-active,.my-leave-active{transition:opacity .3s}.my-enter-from,.my-leave-to{filter:blur(1rem);opacity:0}</style><link rel="stylesheet" href="/_nuxt/entry.CwzcCEke.css" crossorigin><link rel="preload" as="fetch" crossorigin="anonymous" href="/photos/_payload.json?dd3320b0-e3fc-4b9d-bf7c-74743ff98cb6"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CGhswR6u.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/BbvYm02z.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/C_FOZXKD.js"><meta name="description" content="A dashboard to manage your images in S3 buckets. Can be used as a image hosting service."><meta property="og:title" content="S3 Image Port"><meta property="og:description" content="A dashboard to manage your images in S3 buckets."><meta property="og:image" content="https://iport.yfi.moe/cover.png"><meta property="og:url" content="https://iport.yfi.moe"><meta property="og:site_name" content="S3 Image Port"><meta name="twitter:title" content="S3 Image Port"><meta name="twitter:description" content="A dashboard to manage your images in S3 buckets."><meta name="twitter:image" content="https://iport.yfi.moe/cover.png"><meta name="twitter:card" content="summary_large_image"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script type="module" src="/_nuxt/CGhswR6u.js" crossorigin></script><link rel="preload" as="fetch" fetchpriority="low" crossorigin="anonymous" href="/_nuxt/builds/meta/dd3320b0-e3fc-4b9d-bf7c-74743ff98cb6.json"><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><!--teleport start anchor--><!----><!--teleport anchor--><div id="__nuxt"><!--[--><div class="fixed top-0 bottom-0 left-0 right-0 -z-10" style="background-image:url(&quot;&quot;);mask-image:linear-gradient(transparent, black, transparent);"></div><span></span><!--teleport start--><!--teleport end--><!--]--></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__" data-src="/photos/_payload.json?dd3320b0-e3fc-4b9d-bf7c-74743ff98cb6">[{"state":1,"once":9,"_errors":10,"serverRendered":6,"path":12,"pinia":13,"prerenderedAt":14},["Reactive",2],{"$snuxt-i18n-meta":3,"$scolor-mode":4,"$snotifications":8},{},{"preference":5,"value":5,"unknown":6,"forced":7},"system",true,false,[],["Set"],["ShallowReactive",11],{},"/photos",{},1738933665782]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{i18n:{baseUrl:"",defaultLocale:"en",defaultDirection:"ltr",strategy:"prefix_except_default",lazy:false,rootRedirect:"",routesNameSeparator:"___",defaultLocaleRouteNameSuffix:"default",skipSettingLocaleOnNavigate:true,differentDomains:false,trailingSlash:false,locales:[{code:"en",language:"en-US",name:"English",files:["/home/runner/work/s3-image-port/s3-image-port/i18n/locales/en.json"]},{code:"zh",language:"zh-CN",name:"简体中文",files:["/home/runner/work/s3-image-port/s3-image-port/i18n/locales/zh.json"]}],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_redirected",cookieSecure:false,fallbackLocale:"en",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",switchLocalePathLinkSSR:false,autoImportTranslationFunctions:false,typedPages:true,typedOptionsAndMessages:false,generatedLocaleFilePathFormat:"absolute"},multiDomainLocales:false}},app:{baseURL:"/",buildId:"dd3320b0-e3fc-4b9d-bf7c-74743ff98cb6",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>